草庐IT

Java TCP Socket等待空闲?

全部标签

等待线程的Java列表

有没有办法获取对象上的等待线程列表/等待线程数? 最佳答案 如果您使用synchronized关键字-没有。但是,如果您使用的是java.util.concurrent锁,你可以。ReentrantLock有一个protected方法getWaitingThreads().如果扩展它,则可以将其公开。更新:您正在使用.wait()和.notify(),因此您可以手动填充和清空List-观看之前.wait()调用list.add(Thread.currentThread(),并在每次通知之前将其删除。它并不完美,但实际上您不应该需要这

java - 等待 jdialog 关闭

我有一个扩展JDialog的类FilePathDialog并且该类正在从某个类X中调用。这是类X中的一个方法projectDialog=newFilePathDialog();projectDialog.setVisible(true);projectDialog.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.out.println("Windowclosing");try{doWork();}catch(Throwablet){t.printStackTrace();

java:如果总是在锁释放之前调用 notify(),等待的线程如何获得同一个锁?

我想我已经知道了那个问题的答案,但是,我想阅读您的意见以确保我真正理解java线程的状态机(或图表)是如何工作的。假设线程A在返回给定值之前运行notify():publicclassbaz{//ThreadBrunsthis:publicsynchronizedvoidbar(){wait();}//ThreadArunsthis:publicsynchronizedintfoo(){notify();return11;}}notify()将在线程A释放锁之前调用(这将在return11;语句“之后”发生)。那么,正在等待此锁(通过wait()方法)的线程B如何获取仍由线程A持有的锁

在等待“ recv”的消息时,如何制作代码循环

我正在编写一个简单的C游戏,该游戏接受网络上的密钥输入。由于这是我第一次在C中处理插座,因此我在某些功能方面面临一些问题。此功能称为“RECV”,似乎等待TCP连接中的任何网络消息,直到收到数据为止。问题在于,由于这“冻结”了程序,但没有消息,因此我应该在无限循环中运行的普通游戏代码无法正常工作。有没有办法等待网络消息并同时运行游戏?while(1)//Infinite'gameloop'start{read_size=recv(newsockfd,client_message,2000,0);if(read_size>0){//Dosomething}//Gamecodehere(Doesn

Java 取消 Future - 如何等待完成?

长话短说:我有一组Future对象。其中有些已经在进行中,有些还没有。我迭代集合并调用future.cancel(false),根据文档,它应该取消所有当前未运行但应该允许所有其他的Future完成。我的问题是:在调用future.cancel(false)之后,我如何知道特定的Future何时完成?future.isDone()总是返回true因为cancel()确实在此之前被调用过并且future.get()始终抛出CancellationException,即使Future仍在运行。有什么建议吗? 最佳答案 由于Future对

java - 如何在 Java 中获得空闲堆大小(不包括堆栈/方法内存)?

我想计算我的应用程序的堆使用情况。我想仅获得堆大小的百分比值。如何获取当前正在运行的应用程序的代码值?编辑有一个点赞的答案不完整/不正确。这些方法返回的值也包括堆栈和方法区,我只需要监控堆大小。使用该代码,当我达到43%时出现HeapError异常,因此我不能使用这些方法来仅监视堆Runtime.getRuntime().totalMemory() 最佳答案 dbyme的回答是不准确的——这些运行时调用给你一个JVM使用的内存量,但是这个内存不仅仅由堆组成,还有堆栈和方法区,例如 关于j

Java 垃圾收集器 G1GC 花费很长时间等待 'Object Copy'(疏散暂停)

我不是Java新手,但我对垃圾回收知之甚少。现在我想通过一些实际经验来改变这种状况。我的目标是延迟时间低于0.3秒,或者在极端情况下0.5秒也可以。我有一个带有-Xmx50gb(-Xms50gb)的应用程序并设置了以下其他GC选项:-XX:+UseG1GC-Xloggc:somewhere.gc.log-XX:+PrintGCDateStamps但现在我偶尔会因为垃圾收集而暂停超过5秒,尽管似乎有足够的可用内存。我发现的一个原因:[GCpause(G1EvacuationPause)(young)42G->40G(48G),5.9409662secs]为什么GCG1还在为此做一个“停止

java - 如何知道 Actor 是否空闲

我有未知数量的工作要由已知(当然)数量的Actor执行。Actor完成工作后,初始工作数量可能会增加。也就是说,一个参与者在完成其任务后,可能会添加一个要执行的新作业。我处理这个问题的方法是让每个actor在完成其工作后向master发送一条消息,不仅包含执行结果,还带有一个“标志”,表明该actor现在处于空闲状态。master有一个作业队列和一个空闲actor队列,每当一个actor发送“作业完成消息”时,master就会检查该actor是否还有其他事情要做......等等,直到作业队列是空的,闲置队列已满...那时我关闭了系统。这里没有太多的监督,所以我觉得我做的不对...我没有

java - Jenkins 无法启动 selenium 测试(等待创建配置文件超时)

Jenkins无法启动selenium测试(ubuntu)错误11:26:24.652信息-已启动org.openqa.jetty.jetty.Server@ab50cd11:26:24.738信息-正在准备Firefox配置文件...看到HTML套件异常:java.lang.RuntimeException:WAITING创建配置文件超时!在org.openqa.selenium.server.browserlaunchers.FirefoxChromeLauncher.waitForFullProfileToBeCreated(FirefoxChromeLauncher.java:

java - EC2 Java Api 等待创建 Ec2 实例。

我刚刚开始使用Java中的AmazonEC2API。我使用ec2.runInstances(runInstancesRequest)创建了实例;但是启动实例需要一些时间(通常为1-2分钟)。我需要通过JavaEC2API获取机器的公共(public)DNS。我如何知道实例何时从“待定”状态变为“已处理”状态,以及如何通过EC2API获取EC2实例的公共(public)DNS。提前致谢。看那 最佳答案 当EC2对象更改状态时,SDK不会引发任何事件模型或其他信号来告诉您-唯一的发现方法是重复对对象发出DescribeXXXXXXXX调